package com.lailai.dto;

import jakarta.validation.constraints.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Date;
import java.util.List;

/**
 * 版本信息数据传输对象
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class VersionDTO {

    /**
     * 版本ID（可空，新增时不需要）
     */
    private Long id;

    /**
     * 版本号（唯一，必填）
     */
    @NotBlank(message = "版本号不能为空")
    private String versionNumber;

    /**
     * 发布名称
     */
    private String releaseName;

    /**
     * 发布时间
     */
    @NotNull(message = "发布时间不能为空")
    private Date releaseDate;

    /**
     * 是否为主版本
     */
    private Boolean isMajorUpdate = false;

    /**
     * 是否公开
     */
    private Boolean isPublic = true;

    /**
     * 发布说明（Markdown）
     */
    private String releaseNotes;

    /**
     * 最低系统要求
     */
    private String minRequirements;

    /**
     * 下载地址
     */
    private String downloadUrl;

    /**
     * 校验码（SHA-256）
     */
    private String checksum;

    /**
     * 版本文件列表
     */
    private List<VersionFileDTO> files;

    /**
     * 版本特性列表
     */
    private List<VersionFeatureDTO> features;

    /**
     * 依赖项列表
     */
    private List<VersionDependencyDTO> dependencies;

    /**
     * 已知问题列表
     */
    private List<KnownIssueDTO> knownIssues;
}
